#include<iostream>
#include<vector>
#include<algorithm>
#include<unordered_map>
using namespace std;
typedef long long ll;

void solve(){
    ll n,t;
    cin>>n>>t;
    ll sum=0,res=0;
    vector<pair<ll,ll>> a(n);
    for(int i=0;i<n;i++){
    	cin>>a[i].first;
    	sum+=a[i].first;
    }
    for(int i=0;i<n;i++){
    	cin>>a[i].second;
    }
    sort(a.begin(),a.end(),greater<pair<ll,ll>>());

    for(auto [aa,b]:a){
    	if(sum<t){
    		if(sum+aa*b>t){
    			while(b&&sum<t){
    				sum+=aa;
    				res++;
    			}
    		}else{
    			res+=b;
    			sum+=aa*b;
    		}
    	}else{
    		break;
    	}
    }
    if(sum>=t)cout<<res<<'\n';
    else cout<<-1<<'\n';
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    int t=1;
    // cin>>t;
    while(t--){
        solve();
    }
    return 0;
}